Over the past few years, object oriented programming has significantly improved the way businesses use and apply applications programs. There remain however a number of issues in fully automating business. The major issues stem from the fact that most business information is in the form of paper documents. One problem associated with maintaining paper documents is that paper does not integrate well with computer systems. For example, computers can track large amounts of customer data. Computer-based data can be used to easily locate information such as customers' account profiles and shipment records, while paper-based documents bearing an original signature for example are often misplaced when most needed. Further paper documents and paper captured information are typically stored/filed separately from other data and companion documents in contrast to computer-held information and documents.
As such, document imaging is a major area of concern in business automation, particularly with regard to implementing object oriented programming concepts. Document imaging is a technology that converts paper documents/information into electronic form, where storage, retrieval and use of the document can be automated using standard computer technology. By capturing paper documents as electronic images stored by the computer, all the benefits and power of database, e-mail, network, facsimile and memory storage technology can be applied to what was once manually processed information.
On the other hand, however, object oriented programming lacks standards or protocols which transport objects or data from one application regime to another. That is, although image documents can be electronically filed using multiple index and filing methods, and then quickly searched and retrieved, and subsequently shared among multiple users, each task must be controlled and managed through a common application program.
Microsoft's Object Linking and Embedding (OLE) is a set of standards for building connectable component software. As used herein, "components" are reusable self contained pieces of software that provide a stand-alone function, such as printing, facsimile transmission, etc. As such, components can be plugged into (i.e., conjoined with) other components to form a working system as desired. In distinction, an "object" is a programming entity comprising some state and a set of defined behaviors. The state is represented by data (properties) maintained by the object. The behavior is specified in terms of operations, functions or methods that the object can perform. Operations are realized by executable code. Conceptually the data and the code are inextricably bound together in the object. Objects may be "persistent", that is they may continue to exist even though they are inactive or the computer on which they exist has failed or been turned off. Thus a key distinction between objects and components is that an object is a piece of source code or a specification that can be used to build part of an application, while a component is an actual working (stand alone) software module.
OLE allows a degree of integration and interchangeability between software modules that share proprietary knowledge (data). One OLE standard is the Component Object Model (COM) specification, which provides the mechanism for connecting binary object codes of different components. The common element among all standard OLE connections is that they are glued together with COM. Restated, COM is an object-oriented specification for defining interfaces, the contact points between components. To that end, COM provides a foundation on which all OLE features are built.
OLE controls (called OCXs or ACTIVE X) are another type of OLE component standard. OCXs include properties, methods and events which enable programmers to add specific (well defined) functions to application programs. The functions enable end users to perform certain tasks on desired data. Being self contained objects, OCXs are portable and insertable into any container or applications program. A "container application" or an OLE "control container" (and generally an "object container") is any working computer program that is formed of or has defined within it OLE components and objects. For example, Microsoft products such as the Office Suite and Windows 95 are containers. In such a graphical user interface (GUI) environment, as Windows 95, a control is then essentially a special purpose window (i.e., a "child window") which sends messages or event notices to a parent window in the container program.